FFT

class mindradar.FFT(n=-1, dim=-1, norm='backward')

傅里叶变换FFT。计算表达式为:

\[X[\omega_1, \dots, \omega_d] = \sum_{n_1=0}^{N_1-1} \dots \sum_{n_d=0}^{N_d-1} x[n_1, \dots, n_d] e^{-j\ 2 \pi \sum_{i=0}^d \frac{\omega_i n_i}{N_i}},\]

其中, \(d\) = signal_ndim 是信号的维度,\(N_i\) 则是信号第 \(i\) 个维度的大小。

参数:
  • n (int,可选) - 输出转换轴的长度。如果n小于输入的长度,则裁剪输入。如果它更大,则输入将填充零。如果未给出n,则使用沿轴指定的轴的输入长度。默认值: -1

  • dim (int,可选) - 计算FFT的轴。如果没有给出,则使用最后一个轴。默认值: -1

  • norm (str,可选) - 表示该操作的规范化方式,可选值:[ "backward" , "forward" , "ortho" ]。默认值: "backward"

    • "backward",正向变换不缩放,逆变换按 \(1/n\) 缩放,其中 n 表示输入 x 的元素数量。

    • "ortho",正向变换与逆变换均按 \(1/\sqrt n\) 缩放。

    • "forward",正向变换按 \(1/n\) 缩放,逆变换不缩放。

输入:
  • x (Tensor) - 输入Tensor的维数必须大于或等于 dim 。数据类型应为复数。

输出:

Tensor,表示复数到复数傅里叶变换FFT的结果。

支持平台:

CPU

备注

FFT要求complex64或complex128类型的输入,返回complex64或complex128类型的输出。

示例:

1import mindspore as ms
2import mindradar as mr
3import numpy as np
4
5x = np.exp(3j * np.pi * np.arange(10) / 10).reshape(2, 5).astype(np.complex64)
6x_tensor = ms.Tensor(x)
7fft = mr.FFT()
8out = fft(x_tensor)
9print(out)